草庐IT

Java HotSpot 枚举开销

全部标签

c++ - 使用同名的类和枚举?

我有一个同名的类和一个枚举值。在类里面,我想使用给出错误的枚举。有没有什么方法可以重命名或移动到不同的命名空间来使用枚举?例子:namespacefoo{enumbar{BAD};classBAD{voidworse(){barb=BAD;//error}};}; 最佳答案 这是执行名称查找的棘手部分之一。C++中有两种标识符作用域,一种用于类类型,一种用于通用标识符作用域。枚举值BAD位于通用标识符范围内,而类类型BAR位于类标识符范围内。这就是允许您同时拥有枚举值和具有相同名称的类的原因:两个名称不会冲突。在BAD类中,标识符查

c++ - 将枚举转换为 int

我对这段代码有疑问:templatevoiddosth(T&value,constT&default_value){if(condition)value=10;elsevalue=default_value;}当我调用它时enum{SITUATION1,STIUATION2};intk;dosth(k,SITUATION1);编译器(g++4.5)说nomatchingfunctionforcallto'dosth(int&,)'为什么编译器不自动将枚举转换为int? 最佳答案 Yourproblem是因为无法从您提供的函数参数实例

c++ - 是否可以将枚举的默认类型设置为无符号字符?

我必须将一些枚举打包到字节数组(char*)并通过网络发送。是否可以将枚举的默认类型设置为无符号字符?(我现在可以转换或使用&0xff来提取第一个字节/字符,但这需要额外的操作,所以有没有办法在枚举定义中解决这个问题?) 最佳答案 这仅适用于C++11stronglytypedenums:enumclassMyEnum:unsignedchar{E1,E2};参见here了解更多信息 关于c++-是否可以将枚举的默认类型设置为无符号字符?,我们在StackOverflow上找到一个类似的

c++ - Qt:在 QComboBox 中使用枚举

我有一组参数需要编辑,其中一些是枚举。到今天为止,我在QSpinBox中使用枚举的原始值,这一点都不友好。你必须自己记住这些值并设置好的:例如,E_Range可以显示一个组合框,其中包含:typedefenum{ERANGE_2_5=0,/*!我没有找到任何有关在QComboBox中使用枚举的信息。可能吗?如果是,步骤是什么?我的意思是,我想我必须通过Qt声明枚举,以便它可以通过Qt元对象“枚举”。但从那里,我不确定。 最佳答案 当然,您始终可以对这些值进行硬编码,但是一旦您修改了该枚举,您就必须记住更改填充组合框的代码。Imean

C++ 将枚举作为参数传递

如果我有一个像这样的简单卡片类:classCard{public:enumSuit{CLUBS,DIAMONDS,HEARTS,SPADES};Card(Suitsuit);};然后我想在另一个文件中创建一个卡片实例,我该如何传递枚举?#include"Card.h"usingnamespacestd;intmain(){Suitsuit=Card.CLUBS;Cardcard(suit);return0;}错误:'Suit'未在此范围内声明我知道这行得通:#include"Card.h"usingnamespacestd;intmain(){Cardcard(Card.CLUBS);

c++ - 运算符为枚举重载

是否可以为枚举定义运算符?例如,我的类(class)中有枚举月份,我希望能够编写++my_month。谢谢附言为了避免溢出,我做了这样的事情:voidDate::add_month(){switch(my_month_){caseDec:my_month_=Jan;add_year();break;default:++my_month_;break;}} 最佳答案 是的,你可以:enumMonth{January,February,//...snip...December};//prefix(++my_month)Month&ope

c++ - 在 C++ 中使用 cflags枚举

我有一个像这样定义枚举的CAPI:typedefenum{C_ENUM_VALUE_NONE=0,C_ENUM_VALUE_APPLE=(1有一个使用枚举的方法,定义为:voiddo_something(CEnumTypetypes);在C中,您可以这样调用:do_something(C_ENUM_VALUE_APPLE|C_ENUM_VALUE_BANANA);但是,如果您尝试在C++(Linux、g++编译器)中以这种方式调用它,则会出现错误,从“int”到“CEnumType”的无效转换。从我的C++应用程序使用此CAPI的正确方法是什么? 最佳答案

c++ - 使用 std::vector 的开销?

我知道手动动态内存分配通常不是一个好主意,但有时它是否比使用std::vector更好?举一个粗略的例子,如果我必须存储一个n整数数组,其中n来实现它int*data=newint[n];//assumingnissetbeforehand或使用vector:std::vectordata;使用std::vector是否绝对是一个更好的主意,或者在实际情况下手动分配动态内存会是一个更好的主意,以提高效率? 最佳答案 使用std::vector/std::array总是更好,至少在您可以最终证明之前(通过分析)T*a=newT[100

c# - Win10中的EnumWindows函数只枚举桌面应用

documentation在EnumWindows下划线:NoteForWindows8andlater,EnumWindowsenumeratesonlytop-levelwindowsofdesktopapps.“桌面应用”和“非桌面应用”有什么区别?这与metro应用有关吗?我问是因为EnumWindows在Win10和Win7中表现有些不同。 最佳答案 另一种解决方案是使用win32u.dll中未记录的api,它具有原型(prototype):NTSTATUSWINAPINtUserBuildHwndList(HDESKin

c# - 如何在不使用环境枚举的情况下在 C# 中以编程方式解析环境变量?

这个问题在这里已经有了答案:关闭10年前。PossibleDuplicate:ExpandenvironmentvariableforMyDocuments我们经常在WindowsXp、7、Vista、Server2003-2008R2以及可能在未来的Windows版本中的命令提示符中使用%%分隔的环境变量。例子是:%windir%%systemroot%%temp%我需要能够使用C#以编程方式解析这些环境变量。请不要建议Environmen.SpecialFolder,因为我正在从上述格式的网络服务中获取值,我需要能够以编程方式解析它们并确定这些路径在服务器上的物理位置。我的场景是一